package pruebas;

import java.util.ArrayList;

import juego.Botin;
import juego.Coordenada;
import juego.Energia;
import juego.ExcepcionMismoElemento;
import juego.Impacto;
import juego.Laser;
import juego.Movil;
import juego.Proyectil;
import junit.framework.TestCase;


public class TestLaser extends TestCase{
	
	
	public void testMovimiento(){
		
		ArrayList<Movil> listaDeMoviles = new ArrayList<Movil>();
		ArrayList<Botin> listaDeBotines = new ArrayList<Botin>();
		Coordenada lugar = new Coordenada (0,20);
		Laser laser = new Laser(lugar);
		laser.vivir(listaDeMoviles, listaDeBotines);
		assertEquals (laser.verUbicacion().obtenerCoordenadaX(), 0);
		assertEquals (laser.verUbicacion().obtenerCoordenadaY(), 10);
		
		laser.hacerLeal();
		laser.vivir(listaDeMoviles, listaDeBotines);
		assertEquals (laser.verUbicacion().obtenerCoordenadaX(), 0);
		assertEquals (laser.verUbicacion().obtenerCoordenadaY(), 20);
				
	};
	
	public void testImpactoProvocado(){
		
		Coordenada lugar = new Coordenada (0,20);
		Laser laser = new Laser(lugar);
		Energia energia = new Energia(10);
		Impacto impacto = laser.impactoProvocado();
		impacto.herir(energia);
		assertEquals(7, energia.verEnergia());
	};
	
	public void testContactoEfectivo(){
		
		Coordenada lugar = new Coordenada (0,20);
		Proyectil proyectil = new Laser(lugar);
		Coordenada otroLugar = new Coordenada (2,20);
		Proyectil otroProyectil = new Laser(otroLugar);
		try {
			assertTrue (proyectil.huboContacto(otroProyectil));
		} catch (ExcepcionMismoElemento e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	};
	
	public void testContactoNoEfectivo(){
		
		Coordenada lugar = new Coordenada (0,20);
		Proyectil proyectil = new Laser(lugar);
		Coordenada otroLugar = new Coordenada (3,20);
		Proyectil otroProyectil = new Laser(otroLugar);
		try {
			assertFalse (proyectil.huboContacto(otroProyectil));
		} catch (ExcepcionMismoElemento e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		};
	};
	
	
	public void testExcepcionContacto(){
		
		Coordenada lugar = new Coordenada (0,20);
		Proyectil proyectil = new Laser(lugar);
		boolean pasado;
		try {
			proyectil.huboContacto(proyectil);
			pasado = false;
		}
		catch (ExcepcionMismoElemento e) {
			pasado = true;
		}
		catch (Exception a){
			pasado = false;
		};
		
		assertTrue(pasado);
	};
		
	
	}
	
	
	


